import OpenAI from "openai";
import { handleSuccess, handleError } from './index.js'
import { getAIConfig, validateEnv } from '@/config/env.js'

// 验证环境变量
validateEnv()

// 获取AI配置
const aiConfig = getAIConfig()

// 创建OpenAI实例，配置DeepSeek API
const openai = new OpenAI({
    baseURL: aiConfig.baseURL,
    apiKey: aiConfig.apiKey,
    dangerouslyAllowBrowser: true // 允许在浏览器中使用
});

/**
 * AI助手对话接口
 * @param {string} message - 用户消息
 * @param {Array} history - 对话历史
 * @returns {Promise} AI回复
 */
export const chatWithAI = async (message, history = []) => {
    try {
        // 构建消息历史
        const messages = [
            { 
                role: "system", 
                content: "你是一个专业的法律援助助手，能够帮助用户解答法律相关问题。请用专业、易懂的语言回答用户的问题，并提供相关的法律建议。如果问题超出法律范围，请礼貌地说明并建议用户咨询相关专业人士。" 
            }
        ];

        // 添加历史对话
        if (history && history.length > 0) {
            history.forEach(item => {
                messages.push({ role: "user", content: item.question });
                messages.push({ role: "assistant", content: item.answer });
            });
        }

        // 添加当前用户消息
        messages.push({ role: "user", content: message });

        // 调用DeepSeek API
        const completion = await openai.chat.completions.create({
            messages: messages,
            model: "deepseek-chat",
            max_tokens: 1000,
            temperature: 0.7,
            stream: false
        });

        const aiResponse = completion.choices[0].message.content;
        
        return handleSuccess({ data: { code: 200, data: aiResponse, message: 'AI回复成功' } }, 'AI对话');
    } catch (error) {
        console.error('AI对话失败:', error);
        return handleError(error, 'AI对话', 'AI服务暂时不可用，请稍后重试');
    }
};

/**
 * 获取AI助手状态
 * @returns {Promise} 状态信息
 */
export const getAIStatus = async () => {
    try {
        // 简单的测试请求
        const completion = await openai.chat.completions.create({
            messages: [{ role: "user", content: "你好" }],
            model: "deepseek-chat",
            max_tokens: 10
        });
        
        return handleSuccess({ data: { code: 200, data: { status: 'online' }, message: 'AI服务正常' } }, 'AI状态检查');
    } catch (error) {
        return handleError(error, 'AI状态检查', 'AI服务连接失败');
    }
};

/**
 * 模拟AI回复（用于开发测试）
 * @param {string} message - 用户消息
 * @returns {Promise} 模拟回复
 */
export const mockAIResponse = async (message) => {
    // 模拟延迟
    await new Promise(resolve => setTimeout(resolve, 1000));
    
    const mockResponses = {
        '你好': '您好！我是法律援助AI助手，很高兴为您服务。请问有什么法律问题需要帮助吗？',
        '离婚': '关于离婚问题，我建议您了解以下几点：\n1. 离婚方式：协议离婚和诉讼离婚\n2. 财产分割原则\n3. 子女抚养权问题\n\n建议您咨询专业律师获取详细指导。',
        '合同': '合同相关问题涉及多个方面：\n1. 合同成立要件\n2. 合同效力认定\n3. 违约责任处理\n\n请提供具体问题，我可以为您详细解答。',
        '劳动': '劳动法相关问题包括：\n1. 劳动合同签订\n2. 工资支付\n3. 工伤认定\n4. 解除劳动合同\n\n请描述具体情况，我会为您提供相关建议。'
    };

    // 根据关键词匹配回复
    for (const [keyword, response] of Object.entries(mockResponses)) {
        if (message.includes(keyword)) {
            return handleSuccess({ data: { code: 200, data: response, message: 'AI回复成功' } }, 'AI对话');
        }
    }

    // 默认回复
    const defaultResponse = '感谢您的咨询。我是法律援助AI助手，主要帮助解答法律相关问题。如果您有具体的法律问题，请详细描述，我会尽力为您提供帮助。';
    return handleSuccess({ data: { code: 200, data: defaultResponse, message: 'AI回复成功' } }, 'AI对话');
}; 